/*
 * @Author: spring
 * @version:
 * @Date: 2022-09-06 22:47:14
 * @LastEditors: spring
 * @LastEditTime: 2022-09-09 10:41:46
 * @Descripttion: tcp 通信格式头文件
 */

#ifndef _COM_FORMAT_H_
#define _COM_FORMAT_H_
// 通信格式头的大小，13个字节
#define COM_TOP_SIZE 13

// 通信格式头 标识请求方的身份：正数表示是来自app的数据，负数表示控制的小车，1和-1 对应
#define COM_TOP (int)(1)

// 通信格式命令类型
enum COM_CMD_TYPE
{
    // 小车环境信息
    ENV_INFO = 0,
    // 按喇叭 （喇叭音量，响几次）
    TRUMPET,
    // 小车行动
    CAR_BEHAVIOR,
    // 视频
    VIDEO,
    // 请求连接
    REQUST,
    // 小车上线
    CAR_ACK,
    // 小车掉线
    CAR_ACK_FAIL,

    // 等等
};

struct head
{
    int data_type;
    long long size;
    char cmd_type;
};
struct wait_arg
{
    struct head top;
    int fd;
};
// 获取小车的环境或者信息
struct car_info
{
    // 温度
    float temp;
    // 湿度
    float hum;
    // 噪声 分贝
    float noise;
    // 是否有障碍物 1 是有 0是无
    char barrier;
    // 速度 m/s
    float speed;
    // 倾斜度 等等
};

// 不同命令对应的数据/数据结构

// 改变小车 行动命令
struct activate_car
{
    // 方向 0-360. 正右方为0 上方是90 (逆时针)
    float degrees;
    // 力度
    float F;
};

// 喇叭
struct trumpet
{
    // 喇叭模式 (响一下，响n下，一直响直到收到停止)
    int mode;
    // 喇叭音量
    int volume;
    // 喇叭响的频率
    int HZ;
};

// 等等

#endif
//_COM_FORMAT_H_